#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <cassert>


struct BinaryTreeNode;
typedef struct BinaryTreeNode* QueueDataType;

typedef struct QueueNode {
	QueueDataType _data;
	struct QueueNode* _next;
}QueueNode;

typedef struct Queue {
	struct QueueNode* _head;
	struct QueueNode* _tail;
}Queue;

void QueueInit(Queue* pqueue);
void QueueDestory(Queue* pqueue); 
void QueuePrint(Queue* pqueue);
void QueuePush(Queue* pqueue, QueueDataType value);
void QueuePop(Queue* pqueue);
QueueDataType QueueFront(Queue* pqueue);
QueueDataType Queueback(Queue* pqueue);
bool QueueEmpty(Queue* pqueue);
int QueueSize(Queue* pqueue);